package com.minimalist.lindi.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.lindi.po.LindiTradeApplicationFile;
import com.minimalist.common.entity.lindi.vo.tradeapplicationfile.LindiTradeApplicationFileQueryVO;
import com.minimalist.common.entity.lindi.vo.tradeapplicationfile.LindiTradeApplicationFileVO;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 林地指标交易平台_交易申请相关文件 服务层。
 *
 * @author 11987
 * @since 2025-04-27
 */
public interface LindiTradeApplicationFileService extends
        IService<LindiTradeApplicationFile>{

    /**
     * 新增交易申请文件。
     *
     * @param fileVO 交易申请文件VO对象。
     */
    void addTradeApplicationFile(LindiTradeApplicationFileVO fileVO);

    /**
     * 根据ID更新交易申请文件。
     *
     * @param fileVO 交易申请文件VO对象。
     */
    void updateTradeApplicationFileByTradeApplicationFileId(
            LindiTradeApplicationFileVO fileVO);

    /**
     * 查询交易申请文件分页列表。
     *
     * @param queryVO 查询条件。
     * @return 分页列表。
     */
    PageResp<LindiTradeApplicationFileVO> getPageTradeApplicationFileList(
            LindiTradeApplicationFileQueryVO queryVO);

    /**
     * 根据ID获取交易申请文件。
     *
     * @param tradeApplicationFileId 交易申请文件ID。
     * @return 交易申请文件VO对象。
     */
    LindiTradeApplicationFileVO getTradeApplicationFileByTradeApplicationFileId(
            Long tradeApplicationFileId);

    /**
     * 根据交易申请ID查询文件列表。
     *
     * @param tradeApplicationId 交易申请ID。
     * @return 文件列表。
     */
    List<LindiTradeApplicationFileVO> getTradeApplicationFilesByApplicationId(
            Long tradeApplicationId);

    /**
     * 根据交易申请文件ID删除交易申请文件。
     *
     * @param tradeApplicationFileId 交易申请文件ID。
     */
    void deleteTradeApplicationFileByTradeApplicationFileId(Long tradeApplicationFileId);

    /**
     * 根据文件ID删除文件。
     *
     * @param fileId 文件ID。
     */
    void deleteFileByFileId(Long fileId);
}
